package grapid.util;

import java.util.regex.Pattern;

/**
 * 常用数据检查类
 * 
 * @author grapid
 * @version 2.0
 * 
 */
public class GCheck {

	public static String REGEXP_EMAIL = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
	public static String REGEXP_URL = "^(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:\\/~\\+#]*[\\w\\-\\@?^=%&\\/~\\+#])?$";
	public static String REGEXP_NICKNAME = "^([.A-Za-z0-9_]|[^\\x00-\\xff]){2,24}$";
	public static String REGEXP_PASSWORD = "^.{6,20}$";
	public static String REGEXP_NUM = "^\\d+$";

	/**
	 * 正则匹配字符串
	 * 
	 * @param regExp
	 *            正则表达式
	 * @param str
	 *            待匹配字符串
	 * @return 返回是否匹配
	 */
	public static boolean check(String regExp, String str) {
		return regExp != null && str != null && Pattern.matches(regExp, str);
	}

	/**
	 * 是否是邮件格式
	 * 
	 * @param email
	 *            待匹配字符串
	 * @return 返回是否匹配
	 */
	public static boolean isEmail(String email) {
		return email != null && Pattern.matches(REGEXP_EMAIL, email);
	}

	/**
	 * 是否是网址格式
	 * 
	 * @param url
	 *            待匹配字符串
	 * @return 返回是否匹配
	 */
	public static boolean isUrl(String url) {
		return url != null && Pattern.matches(REGEXP_URL, url);
	}

	/**
	 * 是否是标准的nickname格式
	 * 
	 * @param nickname
	 *            待匹配字符串
	 * @return 返回是否匹配
	 */
	public static boolean isNickname(String nickname) {
		return nickname != null && Pattern.matches(REGEXP_NICKNAME, nickname);
	}

	/**
	 * 是否是标准的password格式
	 * 
	 * @param password
	 *            待匹配字符串
	 * @return 返回是否匹配
	 */
	public static boolean isPassword(String password) {
		return password != null && Pattern.matches(REGEXP_PASSWORD, password);
	}

	/**
	 * 是否全部是数字
	 * 
	 * @param num
	 *            待匹配字符串
	 * @return 返回是否匹配
	 */
	public static boolean isNum(String num) {
		return num != null && Pattern.matches(REGEXP_NUM, num);
	}
}
